#ifndef _RELIBC_WCTYPE_H
#define _RELIBC_WCTYPE_H

#include <wchar.h>

typedef uint32_t wctype_t;

typedef const int32_t *wctrans_t;

#define WEOF 4294967295u

#define WCTYPE_ALNUM 1

#define WCTYPE_ALPHA 2

#define WCTYPE_BLANK 3

#define WCTYPE_CNTRL 4

#define WCTYPE_DIGIT 5

#define WCTYPE_GRAPH 6

#define WCTYPE_LOWER 7

#define WCTYPE_PRINT 8

#define WCTYPE_PUNCT 9

#define WCTYPE_SPACE 10

#define WCTYPE_UPPER 11

#define WCTYPE_XDIGIT 12

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

int iswctype(wint_t wc, wctype_t desc);

wctype_t wctype(const char *name);

int iswalnum(wint_t wc);

int iswalpha(wint_t wc);

int iswblank(wint_t wc);

int iswcntrl(wint_t wc);

int iswdigit(wint_t wc);

int iswgraph(wint_t wc);

int iswlower(wint_t wc);

int iswprint(wint_t wc);

int iswpunct(wint_t wc);

int iswspace(wint_t wc);

int iswupper(wint_t wc);

int iswxdigit(wint_t wc);

wint_t towlower(wint_t wc);

wint_t towupper(wint_t wc);

wctrans_t wctrans(const char *class_);

wint_t towctrans(wint_t wc, wctrans_t trans);

#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus

#endif /* _RELIBC_WCTYPE_H */
